//
//  SYStatus.swift
//  SYWeibo
//
//  Created by Eric on 16/7/24.
//  Copyright © 2016年 Eric. All rights reserved.
//

import UIKit

class SYStatus: NSObject {
    // MARK: - 模型属性
    /// 创建时间
    var created_at: String?
    /// 微博ID
    var id: Int64 = 0
    /// 微博信息内容
    var text: String?
    /// 微博来源
    var source: String?{
        didSet{
        sourceAttr = getSourceStr(source)
        }
    }
    ///  用户数据
    var user: SYUser?
    ///  转发微博
    var retweeted_status:SYStatus?
    // 配图
    var pic_urls:[SYPictureInfo]?
    
    // 转发数
    var reposts_count: Int = 0
    // 评论数
    var comments_count: Int = 0
    // 表态数
    var attitudes_count: Int = 0
    
    //微博来源处理富文本
    var sourceAttr: NSMutableAttributedString?
    
    
    //kvc 构造函数
    init(dict: [String: AnyObject]) {
        super.init()
        setValuesForKeysWithDictionary(dict)
        
    }
    // 由于当前的kvc 构造函数 只能给其当前类的属性赋值 不知道user是一个模型
    // - 解决方法
    //       - 程序员需要自己重写setValueForKey 方法
    override func setValue(value: AnyObject?, forKey key: String) {
        //如果key == "user"
        if key == "user" {
        //判断 value 是否为nil 而且是否可以转成一个字典
            guard let v = value as? [String: AnyObject] else{
                return
            }
        //给其赋值
            user = SYUser(dict: v)
        }else if key == "retweeted_status"{
        //判断value 是否为nil 而且 是否可以转成一个字典
            guard let v = value as? [String: AnyObject] else{
            return
            }
            //给其赋值
            retweeted_status = SYStatus(dict: v)
        }else if key == "pic_urls" {
           //判断value 是否为nil 而且 是否可以转成一个数组
            guard let v = value as? [[String: AnyObject]] else{
            return
            }
            //创建一个临时可变数组
            var tempArray: [SYPictureInfo] = [SYPictureInfo]()
            //遍历  字典转换成模型
            for dic in v {
            //创建一个模型
                let pic = SYPictureInfo(dict: dic)
            tempArray.append(pic)
            }
            pic_urls = tempArray
        
        }else{
        //需要系统帮我们字典个转模型
            super.setValue(value, forKey: key)
 
        }
        
    }

    override func setValue(value: AnyObject?, forUndefinedKey key: String) {
        
    }

}
extension SYStatus{
    // 格式 来自 xxxx
    func getSourceStr(source: String?)-> NSMutableAttributedString{
        // 判断他是否为nil 而且是否保存">
        guard let s = source where s.containsString("\">") else{
            let str = "上海三期微博"
            return getSourceAttr(str)
        }
        // 起始位置和结束位置
        let startRange = s.rangeOfString("\">")!
        let endRange = s.rangeOfString("</")!
        
        
        // 字符串截取
        let result = s.substringWithRange(startRange.endIndex..<endRange.startIndex)
        return getSourceAttr(result)
    }
    // 处理显示微博来源的富文本
    func getSourceAttr(result: String) -> NSMutableAttributedString {
        // 最终显示格式
        let name = "来自 " + result
        // 得到range
        let range = (name as NSString).rangeOfString("来自")
        
        // 创建一个可变富文本
        let attr = NSMutableAttributedString(string: name)
        // 设置属性
        attr.addAttributes([NSForegroundColorAttributeName: UIColor.grayColor()], range: range)
        
        return attr
    }
}

